home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / VISCAFE.BIN / ImageButton.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-06-19  |  4.5 KB  |  196 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.awt.MediaTracker;
  9. import java.awt.image.FilteredImageSource;
  10. import java.net.URL;
  11. import symantec.itools.lang.OS;
  12.  
  13. public class ImageButton extends ButtonBase {
  14.    protected boolean scale = false;
  15.    private URL url = null;
  16.    private Image enabledImage = null;
  17.    private Image disabledImage = null;
  18.    private boolean centerMode = true;
  19.  
  20.    public void setImageURL(URL var1) {
  21.       this.enabledImage = null;
  22.       if (this.disabledImage != null) {
  23.          this.disabledImage.flush();
  24.       }
  25.  
  26.       this.disabledImage = null;
  27.       this.url = var1;
  28.       Image var2 = ((Component)this).getToolkit().getImage(this.url);
  29.       if (var2 != null) {
  30.          MediaTracker var3 = new MediaTracker(this);
  31.          if (var3 != null) {
  32.             try {
  33.                var3.addImage(var2, 0);
  34.                var3.waitForAll();
  35.             } catch (InterruptedException var4) {
  36.             }
  37.  
  38.             if (var3.isErrorAny()) {
  39.                System.err.println("Error loading image " + var2.toString());
  40.                return;
  41.             }
  42.  
  43.             this.enabledImage = var2;
  44.             this.disabledImage = ((Component)this).createImage(new FilteredImageSource(var2.getSource(), new ImageButtonDisableFilter()));
  45.          }
  46.       }
  47.  
  48.       ((Component)this).invalidate();
  49.    }
  50.  
  51.    public URL getImageURL() {
  52.       return this.url;
  53.    }
  54.  
  55.    public void setScaleMode(boolean var1) {
  56.       if (this.scale != var1) {
  57.          this.scale = var1;
  58.          ((Component)this).invalidate();
  59.       }
  60.  
  61.    }
  62.  
  63.    public boolean getScaleMode() {
  64.       return this.scale;
  65.    }
  66.  
  67.    public void setCenterMode(boolean var1) {
  68.       if (this.centerMode != var1) {
  69.          this.centerMode = var1;
  70.          ((Component)this).invalidate();
  71.       }
  72.  
  73.    }
  74.  
  75.    public boolean getCenterMode() {
  76.       return this.centerMode;
  77.    }
  78.  
  79.    public void paint(Graphics var1) {
  80.       Image var2 = ((Component)this).isEnabled() ? this.enabledImage : this.disabledImage;
  81.       if (var2 == null) {
  82.          super.paint(var1);
  83.       } else {
  84.          this.paintHelper(var1, var2);
  85.          Dimension var3 = ((Component)this).size();
  86.          int var4 = super.bevel + 1 + super.pressedAdjustment;
  87.          int var5 = super.bevel + 1 + super.pressedAdjustment;
  88.          int var6 = var3.width - 1;
  89.          int var7 = var3.height - 1;
  90.          if (OS.isMacintosh()) {
  91.             if (this.scale) {
  92.                var4 = super.bevel + super.pressedAdjustment;
  93.                var5 = super.bevel + super.pressedAdjustment;
  94.                var1.drawImage(var2, var4, var5, var6 - super.bevel - super.bevel, var7 - super.bevel - super.bevel, this);
  95.             } else {
  96.                if (this.centerMode) {
  97.                   var4 += var6 - super.bevel - super.bevel - var2.getWidth(this) >> 1;
  98.                   var5 += var7 - super.bevel - super.bevel - var2.getHeight(this) >> 1;
  99.                }
  100.  
  101.                var1.drawImage(var2, var4, var5, this);
  102.             }
  103.          } else {
  104.             if (this.centerMode && !this.scale) {
  105.                var4 += (var6 - var2.getWidth(this)) / 2;
  106.                var5 += (var7 - var2.getHeight(this)) / 2;
  107.             }
  108.  
  109.             if (this.scale) {
  110.                var1.drawImage(var2, var4, var5, var6 - super.bevel * 2, var7 - super.bevel * 2, this);
  111.             } else {
  112.                var1.drawImage(var2, var4, var5, this);
  113.             }
  114.          }
  115.       }
  116.    }
  117.  
  118.    public void update(Graphics var1) {
  119.       this.paint(var1);
  120.    }
  121.  
  122.    private void paintHelper(Graphics var1, Image var2) {
  123.       Dimension var3 = ((Component)this).size();
  124.       int var4 = var3.width;
  125.       int var5 = var3.height;
  126.       int var10 = super.bevel + 1;
  127.       int var11 = super.bevel + 1;
  128.       int var12 = var4 - 1;
  129.       int var13 = var5 - 1;
  130.       int var6 = super.bevel + 1;
  131.       int var7 = super.bevel + 1;
  132.       int var8 = var2.getWidth(this);
  133.       int var9 = var2.getHeight(this);
  134.       var1.setColor(Color.lightGray);
  135.       if (this.centerMode && !this.scale) {
  136.          var6 += var4 - 1 - super.bevel - super.bevel - var8 >> 1;
  137.          var7 += var5 - 1 - super.bevel - super.bevel - var9 >> 1;
  138.       }
  139.  
  140.       if (super.pressed) {
  141.          if (!this.scale) {
  142.             var1.fillRect(0, 0, var6 + super.bevel, var5);
  143.             var1.fillRect(var6 + var8 + super.bevel, 0, var4 - var6 + var8 + super.bevel, var5);
  144.             var1.fillRect(var6 + super.bevel, 0, var8, var7 + super.bevel);
  145.             var1.fillRect(var6 + super.bevel, var7 + var9 + super.bevel, var8, var5 - var7 + var9 + super.bevel);
  146.          }
  147.  
  148.          int var10000 = var10 + (super.bevel > 0 ? 2 : 1);
  149.          var1.setColor(Color.lightGray);
  150.  
  151.          for(int var14 = 1; var14 < super.bevel + 1; ++var14) {
  152.             var1.drawLine(var14, var13 - var14, var12 - var14, var13 - var14);
  153.             var1.drawLine(var12 - var14, var13 - var14, var12 - var14, var14);
  154.          }
  155.  
  156.          var1.setColor(Color.gray);
  157.  
  158.          for(int var15 = 1; var15 < super.bevel + 1; ++var15) {
  159.             var1.drawLine(var15, var13, var15, var15);
  160.             var1.drawLine(var15, var15, var12, var15);
  161.          }
  162.       } else {
  163.          if (!this.scale) {
  164.             var1.fillRect(0, 0, var6, var5);
  165.             var1.fillRect(var6 + var8, 0, var4 - var6 + var8, var5);
  166.             var1.fillRect(var6, 0, var8, var7);
  167.             var1.fillRect(var6, var7 + var9, var8, var5 - var7 + var9);
  168.          }
  169.  
  170.          var1.setColor(Color.white);
  171.  
  172.          for(int var16 = 1; var16 < super.bevel + 1; ++var16) {
  173.             var1.drawLine(var16, var13 - var16, var16, var16);
  174.             var1.drawLine(var16, var16, var12 - var16, var16);
  175.          }
  176.  
  177.          var1.setColor(Color.gray);
  178.  
  179.          for(int var17 = 1; var17 < super.bevel + 2; ++var17) {
  180.             var1.drawLine(var17, var13 - var17, var12 - var17, var13 - var17);
  181.             var1.drawLine(var12 - var17, var13 - var17, var12 - var17, var17);
  182.          }
  183.       }
  184.  
  185.       var1.setColor(Color.black);
  186.       var1.drawLine(1, 0, var4 - 2, 0);
  187.       var1.drawLine(0, 1, 0, var5 - 2);
  188.       var1.drawLine(1, var5 - 1, var4 - 2, var5 - 1);
  189.       var1.drawLine(var4 - 1, var5 - 2, var4 - 1, 1);
  190.       if (super.showInfoTip && super.doInfoTip) {
  191.          ((ButtonBase)this).drawInfoTip();
  192.       }
  193.  
  194.    }
  195. }
  196.